class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        unordered_map<int,int> hash;
        hash[5]=0;
        hash[10]=0;
        hash[20]=0;
        for(int i=0;i<bills.size();++i)
        {
            if(bills[i]==5)
            {
                hash[5]++;
            }
            if(bills[i]==10)
            {
                hash[5]--;
                if(hash[5]<0) return false;
                hash[10]++;
            }
            if(bills[i]==20)
            {
                hash[20]++;
                if(hash[10]>0&&hash[5]>0)
                {
                    hash[10]--;
                    hash[5]--;
                }
                else if(hash[5]>=3)
                {
                    hash[5]-=3;
                }
                else
                {
                    return false;
                }
            }
        }
        return true;
    }
};
